跳到主要内容

Redis 的分布式锁模拟

// ✅ 自定义 redis 全局锁机制。
import crypto from "crypto";

// 生成锁
export async function acquireLock(key: any, ttl = 15) {
const redisServer = global.redis;
const token = crypto.randomUUID(); // 生成唯一 token

const result = await redisServer.set(key, token, {
NX: true,
EX: ttl,
});

// 设置成功,返回值`OK`
if (result === "OK") {
return token;
} else {
return null; // 获取失败
}
}

// 获取锁
export async function getLock(key: any) {
const redisServer = global.redis;
const value = await redisServer.get(key);

return value;
}

// 释放锁
export async function releaseLock(key: any) {
const redisServer = global.redis;

// 删除成功,返回值`1`
const result = await redisServer.del(key);

return result === 1;
}